package main

import "math"

/**
* @Author: DengLibin
* @Date: Create in 2023-01-11 10:00:16
* @Description: 颠倒给定的 32 位无符号整数的二进制位。
输入：n = 00000010100101000001111010011100
输出：964176192 (00111001011110000010100101000000)
解释：输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596，
    因此返回 964176192，其二进制表示形式为 00111001011110000010100101000000。
*/

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-11 10:00:52
 * @Description: 思路 取最后一位 然后 右移
 */
func reverseBits(num uint32) uint32 {

	var r uint32 = 0
	for i := 0; i < 32; i++ {
		a := math.Pow(2, float64(32-i-1))
		r = r + (num&1)*uint32(a)
		num = num >> 1
	}
	return r

}
